package camadaIU;

import java.awt.Rectangle;
import java.awt.Dimension;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import camadaRN.RNUsuario;

public class IUCadastro extends JFrame {

	private JLabel elite = null;
	private JPanel conteudo = null;
	private JLabel rotuloNome = null;
	private JTextField textoNome = null;
	private JLabel rotuloSenha = null;
	private JPasswordField senha = null;
	private JLabel rotuloConfirmacao = null;
	private JPasswordField confirmacaoSenha = null;
	private JButton botaoCadastrar = null;
	private JButton botaoVoltar = null;

	private RNUsuario usuario;
	private IULogin telaAnterior = IULogin.getIULogin();

	public IUCadastro() {
		initialize();
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
	}

	private void initialize() {
		this.setSize(new Dimension(800, 800));
		this.setLocation(100, 10);
		this.setTitle("Elite Squad 1.0 - Cadastro");
		this.setContentPane(getJContentPane());
	}

	private JPanel getJContentPane() {
		if (conteudo == null) {

			elite = new JLabel(new ImageIcon(getClass().getResource("/Gifs/elitesquad.JPG")));
			elite.setBounds(250, 50, 210, 111);

			rotuloConfirmacao = new JLabel();
			rotuloConfirmacao.setBounds(new Rectangle(105, 300, 140, 30));
			rotuloConfirmacao.setText("Confirmacao de senha:");

			rotuloSenha = new JLabel("Senha:");
			rotuloSenha.setBounds(190, 250, 50, 30);

			rotuloNome = new JLabel("Usuario:");
			rotuloNome.setBounds(new Rectangle(190, 200, 50, 30));

			conteudo = new JPanel();
			conteudo.setLayout(null);
			conteudo.add(elite, null);
			conteudo.add(rotuloNome, null);
			conteudo.add(getJTextFieldNome(), null);
			conteudo.add(rotuloSenha, null);
			conteudo.add(getJPasswordSenha(), null);
			conteudo.add(rotuloConfirmacao, null);
			conteudo.add(getJPasswordConfirmacao(), null);
			conteudo.add(getJButtonCadastrar(), null);
			conteudo.add(getJButtonVoltar(), null);
		}
		return conteudo;
	}

	private JTextField getJTextFieldNome() {
		if (textoNome == null) {
			textoNome = new JTextField();
			textoNome.setBounds(new Rectangle(250, 200, 280, 30));
		}
		return textoNome;
	}

	private JPasswordField getJPasswordSenha() {
		if (senha == null) {
			senha = new JPasswordField();
			senha.setBounds(new Rectangle(250, 250, 280, 30));
		}
		return senha;
	}

	private JPasswordField getJPasswordConfirmacao() {
		if (confirmacaoSenha == null) {
			confirmacaoSenha = new JPasswordField();
			confirmacaoSenha.setBounds(new Rectangle(250, 300, 280, 30));
		}
		return confirmacaoSenha;
	}

	private JButton getJButtonCadastrar() {
		if (botaoCadastrar == null) {
			botaoCadastrar = new JButton();
			botaoCadastrar.setBounds(new Rectangle(250, 380, 100, 30));
			botaoCadastrar.setText("Cadastrar");
			botaoCadastrar
					.addActionListener(new java.awt.event.ActionListener() {
						@SuppressWarnings("deprecation")
						public void actionPerformed(java.awt.event.ActionEvent e) {
							// verificacao se senha e confirmacao sao iguais
							if (senha.getText().equals(
									confirmacaoSenha.getText())) {
								// verifica se a senha ou nome do usuario sao
								// nulos
								if (textoNome.getText().equals("")
										|| senha.getText().equals(""))
									JOptionPane
											.showMessageDialog(null,
													"Dados Inconsistentes, digite novamente");
								else
									cadastraUsuario();
							} else {
								JOptionPane.showMessageDialog(null,
										"Senha diferente da confirmacao");
							}
						}
					});
		}
		return botaoCadastrar;
	}

	private JButton getJButtonVoltar() {
		if (botaoVoltar == null) {
			botaoVoltar = new JButton();
			botaoVoltar.setBounds(new Rectangle(380, 380, 80, 30));
			botaoVoltar.setText("Voltar");
			botaoVoltar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					direcionaLogin();
				}
			});
		}
		return botaoVoltar;
	}
	
	private void direcionaLogin() {
		telaAnterior.setVisible(true);
		this.setVisible(false);
	}
	
	@SuppressWarnings("deprecation")
	private void cadastraUsuario() {
		usuario = new RNUsuario(textoNome.getText(), senha.getText());
		if (usuario.cadastrarNovoUsuario())
			direcionaLogin();
		else
			apresentaUsuarioCadastrado();
			
	}

	private void apresentaUsuarioCadastrado() {
		JOptionPane.showMessageDialog(null, "Usuario ja cadastrado");	
	}
} 
